package com.bigbee.singleton;
/**
 * 单例
 * 单例模式有很多好处，它能够避免实例对象的重复创建，不仅可以减少每次创建对象的时间开销，
 * 还可以节约内存空间；能够避免由于操作多个实例导致的逻辑错误。如果一个对象有可能贯穿整个
 * 应用程序，而且起到了全局统一管理控制的作用，那么单例模式也许是一个值得考虑的选择。
 * 
 * 饿汉模式
 * @author gyf
 *
 */
public class singleton1 {
	
	private static singleton1 single = new singleton1();
	
	private singleton1(){} //构造函数定义为private的，保证其他类不能实例此类
	
	public static singleton1 newInstance(){
		return single;//提供一个静态实例返回给调用者
	}
}
/*
 * 饿汉模式是最简单的一种实现方式，饿汉模式在类加载的时候就对实例进行创建，实例在整个程序
 * 周期都存在。它的好处是只在类加载的时候创建一次实例，不会存在多个线程创建多个实例的情况，
 * 避免了多线程同步的问题。它的缺点也很明显，即使这个单例没有用到也会被创建，而且在类加载
 * 之后就被创建，内存就被浪费了。 
 * 这种实现方式适合单例占用内存比较小，在初始化时就会被用到的情况。但是，如果单例占用的内
 * 存比较大，或单例只是在某个特定场景下才会用到，使用饿汉模式就不合适了，这时候就需要用到
 * 懒汉模式进行延迟加载。
 */
